package com.lantosec.hmrp.modules.internal.service;

import com.baomidou.mybatisplus.extension.service.IService;
import com.lantosec.hmrp.core.kit.PageVO;
import com.lantosec.hmrp.modules.internal.entity.InternalPlan;
import com.lantosec.hmrp.modules.internal.entity.InternalTask;
import com.lantosec.hmrp.modules.internal.vo.InternalTaskDetailVO;
import com.lantosec.hmrp.modules.internal.vo.InternalTaskVO;
import com.lantosec.hmrp.modules.internal.vo.InternalTypeVO;

import java.util.List;
import java.util.Map;

/**
 * <p>
 * 评价任务 服务类
 * </p>
 *
 * @author AutoCode
 * @since 2020-04-23
 */
public interface IInternalTaskService extends IService<InternalTask> {

    /**
     * 获取被考评方列表
     * @param internalTaskId
     * @return
     */
    List<InternalTaskDetailVO> getParam(Integer internalTaskId);

    /**
     *
     * @param internalTaskId
     * @param internalPlanId
     * @param targetMode
     * @param targetId
     * @return
     */
    List<InternalTypeVO> getInternalTaskDetailVO(Integer internalTaskId, Integer internalPlanId, Integer targetMode, String targetId);

    /**
     * 查询考评方案下的考评项目列表
     * @param internalPlanId
     * @return
     */
    List<InternalTypeVO> startInternal(Integer internalPlanId);

    /**
     * 未完成任务列表(当前用户不是评价方)
     * @param page
     * @param taskTitle
     * @param startDate
     * @param endDate
     * @param state
     * @return
     */
    List<InternalTaskVO> getNotFinishAll(PageVO<InternalTaskVO> page, Integer internalPlanType, String taskTitle, String startDate, String endDate, Integer state);

    /**
     * 已完成任务列表(当前用户不是评价方)
     * @param page
     * @param taskTitle
     * @param startDate
     * @param endDate
     * @param state
     * @return
     */
    List<InternalTaskVO> getFinishAll(PageVO<InternalTaskVO> page, Integer internalPlanType, String taskTitle, String startDate, String endDate, Integer state);

    /**
     * 查询未完成考评任务列表
     * @param page
     * @param taskTitle
     * @param startDate
     * @param endDate
     * @param state
     * @return
     */
    List<InternalTaskVO> getNotFinish(PageVO<InternalTaskVO> page, Integer internalPlanType,
                  String taskTitle, String startDate, String endDate, Integer state,Integer permissionsType);

    /**
     * 查询已完成考评任务列表
     * @param page
     * @param taskTitle
     * @param startDate
     * @param endDate
     * @param state
     * @return
     */
    List<InternalTaskVO> getFinish(PageVO<InternalTaskVO> page, Integer internalPlanType,
                                   String taskTitle, String startDate, String endDate, Integer state,Integer permissionsType);

    /**
     * 我的考评任务详情
     * @param internalTaskId
     * @param targetMode
     * @return
     */
    Map<String,Object> getUserTaskDetail(Integer internalTaskId, Integer targetMode);

    /**
     * 科室考评任务详情
     * @param internalTaskId
     * @return
     */
    Map<String,Object> getDeptTaskDetail(Integer internalTaskId);

    /**
     * 全院考评任务详情
     * @param internalTaskId
     * @return
     */
    Map<String,Object> getAllTaskDetail(Integer internalTaskId);
}
